package ru.myrtle.umf.impl;

import java.util.*;
import ru.myrtle.*;
import ru.myrtle.umf.*;
import ru.myrtle.umf.impl.*;
import ru.myrtle.umf.util.*;

public abstract class UClassOperationsStub {

    public static final UClassOperations INSTANCE = new UClassOperations();

    public abstract UList<UClass> getAllSuperTypes(UClass self);

    public abstract boolean isSetAllSuperTypes(UClass self);

    public abstract UList<UAttribute> getIdentifyingAttributes(UClass self);

    public abstract boolean isSetIdentifyingAttributes(UClass self);

    public abstract UList<UFeature> getAllFeatures(UClass self);

    public abstract boolean isSetAllFeatures(UClass self);

    public abstract UList<UAttribute> getAttributes(UClass self);

    public abstract boolean isSetAttributes(UClass self);

    public abstract UList<UAttribute> getAllAttributes(UClass self);

    public abstract boolean isSetAllAttributes(UClass self);

    public abstract UList<UReference> getReferences(UClass self);

    public abstract boolean isSetReferences(UClass self);

    public abstract UList<UReference> getAllReferences(UClass self);

    public abstract boolean isSetAllReferences(UClass self);

    public abstract UList<UOperation> getAllOperations(UClass self);

    public abstract boolean isSetAllOperations(UClass self);

    public Class getInstanceClass(UClass self) {
        return UClassifierOperations.INSTANCE.getInstanceClass(self);
    }
    
    public boolean isSetInstanceClass(UClass self) {
        return UClassifierOperations.INSTANCE.isSetInstanceClass(self);
    }

    public void setInstanceClass(UClass self, Class _instanceClass_) {
        UClassifierOperations.INSTANCE.setInstanceClass(self, _instanceClass_);
    }

    public void unsetInstanceClass(UClass self) {
        UClassifierOperations.INSTANCE.unsetInstanceClass(self);
    }

    public String getInstanceTypeName(UClass self) {
        return UClassifierOperations.INSTANCE.getInstanceTypeName(self);
    }
    
    public boolean isSetInstanceTypeName(UClass self) {
        return UClassifierOperations.INSTANCE.isSetInstanceTypeName(self);
    }

    public void setInstanceTypeName(UClass self, String _instanceTypeName_) {
        UClassifierOperations.INSTANCE.setInstanceTypeName(self, _instanceTypeName_);
    }

    public void unsetInstanceTypeName(UClass self) {
        UClassifierOperations.INSTANCE.unsetInstanceTypeName(self);
    }

    public Object getDefaultValue(UClass self) {
        return UClassifierOperations.INSTANCE.getDefaultValue(self);
    }
    
    public boolean isSetDefaultValue(UClass self) {
        return UClassifierOperations.INSTANCE.isSetDefaultValue(self);
    }

    public abstract boolean isDirectSuperType(UClass self, UClass someClass);
    
    public abstract boolean isSuperType(UClass self, UClass someClass);
    
    public abstract UObject createInstance(UClass self);
    
    public boolean isInstance(UClass self, Object object) {
        return UClassifierOperations.INSTANCE.isInstance(self, object);
    }

}

